/**
 * 
 */
package com.mbengue.corp.apr.ra.dao.impl;

import java.io.Serializable;
import java.util.List;

import org.hibernate.Criteria;
import org.hibernate.HibernateException;
import org.hibernate.Session;
import org.hibernate.Transaction;
import org.hibernate.criterion.Restrictions;

import com.mbengue.corp.apr.ra.core.Membre;
import com.mbengue.corp.apr.ra.dao.MembreDao;
import com.mbengue.corp.apr.ra.util.HibernateUtil;

/**
 * @author MMB11447
 *
 */
public class MembreDaoImpl implements MembreDao, Serializable {
	
	private static final long serialVersionUID = 1L;
	
	private Session session;
	
	public MembreDaoImpl() {
		session = HibernateUtil.getSessionFactory();
	}

	/* (non-Javadoc)
	 * @see com.mbengue.corp.apr.ra.dao.MembreDao#ajouterAuteur(com.mbengue.corp.apr.ra.core.Membre)
	 */
	public void ajouterMembre(Membre membre) throws HibernateException {
		Transaction transaction = session.beginTransaction();
		try {
			session.save(membre);
			transaction.commit();
		} catch (Exception e) {
			transaction.rollback();
			throw new HibernateException(e);
		} finally {
			session.flush();
			session.close();
		}
	}

	/* (non-Javadoc)
	 * @see com.mbengue.corp.apr.ra.dao.MembreDao#trouverAuteur(java.lang.String)
	 */
	public Membre trouverMembre(String email) {
		Criteria criteria = session.createCriteria(Membre.class);
		criteria.add(Restrictions.eq("email", email));
		
		return (Membre) criteria.uniqueResult();
	}

	/* (non-Javadoc)
	 * @see com.mbengue.corp.apr.ra.dao.MembreDao#tousLesAuteurs()
	 */
	@SuppressWarnings("unchecked")
	public List<Membre> tousLesMembres() {
		Criteria criteria = session.createCriteria(Membre.class);
		
		return criteria.list();
	}

}
